Spring security 跨域与CORS
2022-04-21
跨域即分为三种,分别为协议跨域、主机跨域、端口跨域等,其中主要根据协议不同、域名不同、端口不同,在这三种之中只要有一个不同,就算是跨域。就比如你访问 http://pv.zsun.org.cn,然后还访问了https://pv.zsun.org.cn/这就对应了跨域中的协议不同,一个时http协议另一个则是https协议,所以造成了跨域。为了解决跨域的问题,其中主要包括了JSONP、NGINX转发、CORS等,其中JSONP和CORS都需要后端进行参与。
CORS
CORS(Cross-Origin Resource Sharing,跨域资源共享)是一个系统,他由一系列的传输HTTP头组成,这些HTTP头将会决定浏览器是否阻止前端JavaScript代码来获取请求相应,同源安全策略是默认阻止“跨域”请求,但是如果使用CORS则会给web服务器一个选择、允许和拒绝请求访问到他们的资源。
就比如Origin来发起请求域:
- Access-Control-Request-Method:将要发起跨域请求的方式(POST/GET……)
- Access-Control-Request-Headers:将要发起跨域请求中包含的请求头字段
- 服务器在响应字段中来表明是否允许这个跨域请求,浏览器收到后如果检测到不合要求,就会拒绝后面的请求
- Access-Control-Allow-Origin:允许那些域来访问
*表示所有的域请求
- Access-Control-Allow-Method:允许那些请求方式
- Access-Control-Allow-Headers:允许那些请求头字段
- Access-Control-Credentials:是否允许携带Cookie
Spring security 实现CORS
CrossOrigin
DemoApplication.java
1 | package com.example.demo; |
WebMvcConfigurerAdapter
WebCorsConfig.java
1 | package com.example.demo.config; |
